/*******************************************************************************
 * 程序说明
 * 
 ******************************************************************************/
#include "../lib/inc/stm8s.h"
#include "../lib/inc/stm8s_clk.h"
#include "../lib/inc/stm8s_gpio.h"

/*******************************************************
 * 休眠1ms
 *******************************************************/
void DelayMS(u16 count)
{
	int j;
	while (count--)
	{
		j = 150;
		while (j--);
	}
}

/*******************************************************
 * 休眠当1时,20um;10时,48um;100时,315um
 *******************************************************/
void DelayUS(u8 count)
{
	while (count--);
}

/*******************************************************
 * 时钟初始化
 *******************************************************/
void CLK_Initialize()
{
	CLK_HSICmd(ENABLE);
	CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV8);
}

/*******************************************************
 * GPIO引脚初始化
 *******************************************************/
void GPIO_Initialize()
{
	GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_SLOW);
}

/********
1-G
2-F
4-E
5-D
6-DP
7-C
9-B
10-A
*********/

#define DP_A GPIO_PIN_0
#define DP_B GPIO_PIN_1
#define DP_C GPIO_PIN_2
#define DP_D GPIO_PIN_3
#define DP_E GPIO_PIN_4
#define DP_F GPIO_PIN_5
#define DP_G GPIO_PIN_6
#define DP_Z GPIO_PIN_7

void main(void)
{
	CLK_Initialize();
	GPIO_Initialize();

	for (int i = 0; i < 12; i++)
	{
		GPIO_WriteReverse(GPIOD, GPIO_PIN_0);
		DelayMS(80);
	}

	GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_6, GPIO_MODE_OUT_OD_HIZ_SLOW);
	GPIO_Init(GPIOB, GPIO_PIN_7, GPIO_MODE_OUT_OD_HIZ_SLOW);
	/* Infinite loop */
	while (1)
	{
		GPIO_Write(GPIOB, 0xFF);
		DelayMS(500);
        //-- 无小数点
		GPIO_Write(GPIOB, 0x88);//0
		DelayMS(200);
		GPIO_Write(GPIOB, 0xF9);//1
		DelayMS(200);
		GPIO_Write(GPIOB, 0x4C);//2
		DelayMS(200);
		GPIO_Write(GPIOB, 0x68);//3
		DelayMS(200);
		GPIO_Write(GPIOB, 0x39);//4
		DelayMS(200);
		GPIO_Write(GPIOB, 0x2A);//4
		DelayMS(200);
		GPIO_Write(GPIOB, 0x0A);//6
		DelayMS(200);
		GPIO_Write(GPIOB, 0xF8);//7
		DelayMS(200);
		GPIO_Write(GPIOB, 0x08);//8
		DelayMS(200);
		GPIO_Write(GPIOB, 0x38);//9
		DelayMS(200);

        //-- 有小数点
		GPIO_Write(GPIOB, 0x80);//0.
		DelayMS(200);
		GPIO_Write(GPIOB, 0xF1);//1.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x44);//2.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x60);//3.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x31);//4.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x22);//4.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x02);//6.
		DelayMS(200);
		GPIO_Write(GPIOB, 0xF0);//7.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x00);//8.
		DelayMS(200);
		GPIO_Write(GPIOB, 0x30);//9.
		DelayMS(200);

//		GPIO_WriteLow(GPIOB, DP_A);
//		DelayMS(200);
	}
}

#ifdef USE_FULL_ASSERT

void assert_failed(u8* file, u32 line)
{
	while (1)
	{
	}
}
#endif


/************************ (C) COPYRIGHT xknife.net *************END OF FILE****/

